{
  //声明一个类型的别名  type 类型 
  type Name = string;
  let str: Name = 'love';
  let age: number = 18;

  //声明一个新的类型   有点像 interface 
  type Person = {
    name: string;
    age: number;
  }

  type Persons = Person[];

  let arr: Persons;
  arr = [{name: '张天爱', age: 32}, {name: '徐开骋', age: 35}];

  let nazha: Person = {
    name: '古力娜扎',
    age: 18
  };

  //获得某个变量的类型
  type AgeType = typeof age; //这里的 typeof 不是 JS 中的 typeof 
  let gaoshou: AgeType = 68;

  //获取接口键名的联合类型
  //获取 person 对象中某个属性的值   key: 'name' | 'age'
  function getInfo(person: Person, key: keyof Person){
    return person[key]
  }
  getInfo(nazha, 'name');

  //获取函数的返回值类型
  // type retType = ReturnType<typeof getInfo>;

  //获取函数参数的类型
  type paramType = Parameters<typeof getInfo>;


  

}